import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        //使用下标 + for遍历
        for(int i = 0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        //for each遍历
        for (Integer integer:list) {
            System.out.println(integer+" ");
        }

        System.out.println(list);
        //使用迭代器输出
        Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next()+" ");
        }
    }
    public static void main2(String[] args) {
        List<String> list = new ArrayList<>();
        //尾插元素
        list.add("JavaSE");
        list.add("JavaWeb");
        list.add("JavaEE");
        list.add("JVM");
        list.add("Test");
        System.out.println(list);//[JavaSE, JavaWeb, JavaEE, JVM, Test]

        //在 list 的 index 位置插入指定元素 , index 及后续元素向后移动一个位置
        list.add(1,"JJava");
        System.out.println(list);//[JavaSE, JJava, JavaWeb, JavaEE, JVM, Test]


        //获取 list 中有效元素的个数
        System.out.println(list.size());//6

        //获取和设置 index 位置上的元素 ; index 介于[0,size)
        System.out.println(list.get(1));//JJava
        list.set(1,"abc");
        System.out.println(list.get(1));//abc

        //在 list 的 index 位置插入指定元素 , index 及后续元素向后移动一个位置
        list.add(1,"JJava");
        System.out.println(list);//[JavaSE, JJava, abc, JavaWeb, JavaEE, JVM, Test]

        //删除指定元素,找到就删除,并将该元素之后的元素统一向前移动一个位置
        list.remove("JVM");
        System.out.println(list);//[JavaSE, JJava, abc, JavaWeb, JavaEE, Test]

        //删除 list 中 index 位置的元素
        list.remove(list.size()-1);
        System.out.println(list);//[JavaSE, JJava, abc, JavaWeb, JavaEE]

        //检测 list 中是否包含指定元素 , 包含返回true , 否则返回false
        if(!list.contains("Test")){
            list.add("Test");
        }

        //查找指定元素第一次出现的位置 ; indexOf从前往后找 , lastIndexOf从后往前找
        System.out.println(list.indexOf("Test"));//5
        System.out.println(list.lastIndexOf("Test"));//5

        //使用list 中[0,3)之间的元素构成一个新的 SubList 返回
        //但是 和 ArrayList 共用一个 elementData 数组;即不会产生新的对象,在原数组上直接截取
        List<String> ret = list.subList(0,3);
        System.out.println(ret);//[JavaSE, JJava, abc]

    }







    public static void main1(String[] args) {
        //无参构造 构造一个空的列表
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(3);

        //构造一个具有10个容量的列表
        List<Integer> list2 = new ArrayList<>(10);
        list2.add(5);
        list2.add(6);

        //List3 中的内容与list2一致
        List<Integer> list3 = new ArrayList<>(list2);

        //list4类型未指定 任意元素都可存放
        List list4 = new ArrayList<>();
        list4.add("123");
        list4.add(123);
    }
}
